go test命令解惑
作者:matrix 被围观: 15 次 发布时间:2026-08-31 分类:Golang | 无评论 »
GO test 单测命令平时也没怎么关注 直接用的IDE自带命令,今天就简单整理下
命令格式
go test [选项参数(怎么测)] [目标路径(测什么)]
命令参数
-v 详细模式Verbose,不加就只显示最终总结果
-tags 加上隔离标签的测试文件
测试文件的第一行写了类似 //go:build erp_integration 这样的注释。如果不加 -tags erp_integration,Go 会直接跳过这些文件,-tags 参数目的test 运行时把这部分测试也带上而不是 only tags
-run 指定函数测试 支持正则表达式
精确匹配:-run ^TestSync$
关键字模糊匹配:-run Protocol
多函数匹配: -run ^TestSync|TestSync2$
-count=1 运行测试测试,指定 1次 可以避免缓存(代码没动,但是 db 有修改的那种情况)
-cover 测试代码覆盖率
-race 并发Bug检查,静态竞争检查
测试指定包(目录)
go test -v ./services/erp
运行这个目录下所有 Test 开头的函数(普通测试函数)
测试指定文件
如果指定的文件有依赖其他文件的话 go test 命令后面都得携带.否则会报错。
一般是建议指定包(目录)测试,然后-run 过滤函数名
go test file1.go dep.go dep2.go .....
测试指定函数
使用-run 参数过滤 运行指定函数
go test -v ./services/erp -run '^TestIntegrationCreateAndRevokeFlow|TestClientLogsRequestAndResponseWithoutPassword$'
注意:go test 后面要么指定目录测试 要么指定文件,否则会报错
# go test ./services/erp -v ./services/erp/xxxx.go
这条命令其实是指定目录测试,后面的乱写的`./services/erp/xxxx.go`东西 其实会被自动忽略